package com.design.working.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebFilter("/jsp/*")
public class UserFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
            throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String servletPath = request.getServletPath();
        String jspType = servletPath.substring(5, servletPath.indexOf("/", 5));

        HttpSession session = request.getSession(false);
        //目前有弊端，一个客户端目前只能等一个端，因为后登的端"userType"键值对会被覆盖
        if (jspType.equals(session.getAttribute("userType")) || jspType.equals("public")) {
            filterChain.doFilter(request, response);
        } else {
            //request.getContextPath();为空
            response.sendRedirect(request.getContextPath() + "/jsp/public/filterError.jsp");
        }
    }

    @Override
    public void destroy() {

    }
}